package pe.edu.upc.jtigers.svpn.domain.model;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.codehaus.jackson.annotate.JsonIgnore;

@Entity
public class Pregunta implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6394486296991665898L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int idPregunta;
	private String descripcion;
	private String respuesta;
	private boolean eliminado;
	// Una pregunta esta referida a un plan de negocio
	@ManyToOne
	@JoinColumn(name = "IdPlanNegocio")
	private PlanNegocio planNegocio;
	// Una pregunta o una respuesta pertenece a una pregunta
	@JsonIgnore
	@ManyToOne
	@JoinColumn(name = "IdPreguntaPadre")
	@Basic(optional = true)
	private Pregunta preguntaPadre;
	// Una pregunta la realiza un emprendedor
	@ManyToOne
	@JoinColumn(name = "IdEmprendedor")
	private Emprendedor emprendedor;
	// Una pregunta la responde un sabio
	@ManyToOne
	@JoinColumn(name = "IdSabio")
	private Sabio sabio;

	// bi-directional many-to-one association to Pregunta
	@OneToMany(mappedBy = "preguntaPadre")
	private Set<Pregunta> preguntas;

	public Pregunta() {
		this.planNegocio = new PlanNegocio();
		this.emprendedor = new Emprendedor();
		this.sabio = new Sabio();
	}

	public int getIdPregunta() {
		return idPregunta;
	}

	public void setIdPregunta(int idPregunta) {
		this.idPregunta = idPregunta;
	}

	public PlanNegocio getoPlanNegocio() {
		return planNegocio;
	}

	public void setoPlanNegocio(PlanNegocio oPlanNegocio) {
		this.planNegocio = oPlanNegocio;
	}

	public Pregunta getoPreguntaPadre() {
		return preguntaPadre;
	}

	public void setoPreguntaPadre(Pregunta oPreguntaPadre) {
		this.preguntaPadre = oPreguntaPadre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public boolean isEliminado() {
		return eliminado;
	}

	public void setEliminado(boolean eliminado) {
		this.eliminado = eliminado;
	}

	public String getRespuesta() {
		return respuesta;
	}

	public void setRespuesta(String respuesta) {
		this.respuesta = respuesta;
	}

	public Sabio getSabio() {
		return sabio;
	}

	public void setoSabio(Sabio sabio) {
		this.sabio = sabio;
	}

	public PlanNegocio getPlanNegocio() {
		return planNegocio;
	}

	public void setPlanNegocio(PlanNegocio planNegocio) {
		this.planNegocio = planNegocio;
	}

	public Pregunta getPreguntaPadre() {
		return preguntaPadre;
	}

	public void setPreguntaPadre(Pregunta preguntaPadre) {
		this.preguntaPadre = preguntaPadre;
	}

	public Emprendedor getEmprendedor() {
		return emprendedor;
	}

	public void setEmprendedor(Emprendedor emprendedor) {
		this.emprendedor = emprendedor;
	}

	public Set<Pregunta> getPreguntas() {
		return preguntas;
	}

	public void setPreguntas(Set<Pregunta> preguntas) {
		this.preguntas = preguntas;
	}
}
